package com.example.a

import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.Nullable
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView

class MainViewActivityLogined : AppCompatActivity(), View.OnClickListener {

    private lateinit var drawerLayout: DrawerLayout
    private lateinit var menuButton: ImageView
    private lateinit var navigationView: NavigationView
    private lateinit var userNameTextView: TextView
    private lateinit var userPortraitImageView: ImageView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.product_default_product_home)

        // 初始化侧边栏相关控件
        drawerLayout = findViewById(R.id.draw_layout)
        menuButton = findViewById(R.id.title_bar_left_view)
        navigationView = findViewById(R.id.navi_view)

        // 获取侧边栏头部视图
        val headerView = navigationView.getHeaderView(0)
        userNameTextView = headerView.findViewById(R.id.tv_user_nick_name)
        userPortraitImageView = headerView.findViewById(R.id.iv_user_portrait)

        // 读取SharedPreferences中的islogin参数
        val preferences: SharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE)
        val isLogin = preferences.getBoolean("is_login", false)

        // 根据登录状态更新侧边栏用户名显示
        if (isLogin) {
            // 这里可以从SharedPreferences中读取用户名，如果没有则使用默认值
            val userName = preferences.getString("phone", "已登录用户")
            userNameTextView.text = userName
        } else {
            // 未登录状态，保持原有的"未登录"提示
            userNameTextView.setText(com.example.myapplication1.R.string.user_accout_offline)
        }

        // 绑定监听器
        menuButton.setOnClickListener(this)
        userPortraitImageView.setOnClickListener(this)
    }

    override fun onClick(v: View) {
        when (v.id) {
            R.id.title_bar_left_view -> {
                // 点击菜单按钮切换侧边栏状态
                if (drawerLayout.isDrawerOpen(Gravity.LEFT)) {
                    drawerLayout.closeDrawer(Gravity.LEFT)
                } else {
                    drawerLayout.openDrawer(Gravity.LEFT)
                }
            }
            R.id.iv_user_portrait -> {
                // 点击头像弹出退出登录确认对话框
                showLogoutConfirmDialog()
            }
        }
    }

    /**
     * 显示退出登录确认对话框
     */
    private fun showLogoutConfirmDialog() {
        AlertDialog.Builder(this)
            .setTitle("确认退出")
            .setMessage("确定要退出登录吗？")
            .setPositiveButton("确定") { dialog, which ->
                // 清除本地缓存的用户数据
                clearUserData()
                // 更新UI显示未登录状态
                userNameTextView.setText(com.example.myapplication1.R.string.user_accout_offline)
                // 提示用户已退出登录
                Toast.makeText(this@MainViewActivityLogined, "已退出登录", Toast.LENGTH_SHORT).show()
                startActivity(Intent(this@MainViewActivityLogined, MainViewActivity::class.java))
            }
            .setNegativeButton("取消") { dialog, which ->
                // 取消退出登录，关闭对话框
                dialog.dismiss()
            }
            .create()
            .show()
    }

    /**
     * 清除本地缓存的用户数据
     */
    private fun clearUserData() {
        val preferences: SharedPreferences = getSharedPreferences("user_info", MODE_PRIVATE)
        val editor = preferences.edit()
        // 清除所有用户相关数据
        editor.clear()
        // 提交修改
        editor.apply()
    }
}